home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / util / cdity / MRQ.lha / MRQ / Source / mrqwindowclass.c < prev    next >
C/C++ Source or Header  |  2000-10-16  |  2KB  |  72 lines

  1. /*
  2. ** mrqwindowclass.c
  3. ** Implements MRQ's window subclass to handle MRQReqMessages from window
  4. ** to application and do the HandleEvent input stuff
  5. **
  6. ** Attributes:
  7. **     MRQWINDOWTAG_REQMESSAGE [ S ] : message structure to fill
  8. **
  9. ** ©1997-1999 by Matthias.Bethke <Matthias.Bethke@gmx.net>
  10. ** You are free to modify this source or use parts of it in your
  11. ** own programs as long as they are distributed as freeware.
  12. */
  13.  
  14. /* $Id: mrqwindowclass.c 1.1 2000/01/25 16:48:20 msbethke Exp msbethke $
  15. **
  16. ** $Log: mrqwindowclass.c $
  17. ** Revision 1.1  2000/01/25 16:48:20  msbethke
  18. ** Initial revision
  19. **
  20. */
  21.  
  22.  
  23. #include <proto/utility.h>
  24. #include <proto/graphics.h>
  25. #include <proto/intuition.h>
  26. #include <exec/memory.h>
  27. #include <lib/mb_utils.h>
  28. #include "mrq.h"
  29. #include "muistuff.h"
  30. #include "mrqwindowclass_private.h"
  31.  
  32. /******************************************************************************/
  33.  
  34.  
  35. static ULONG __saveds __asm MyWindowDispatcher(
  36.     register __a0 struct IClass *cl,
  37.     register __a2 Object *obj,
  38.     register __a1 Msg msg)
  39. {
  40. struct MRQReqMessage *rmsg;
  41.  
  42.     switch(msg->MethodID)
  43.     {
  44.         case OM_SET :
  45.             if(rmsg = (struct MRQReqMessage*)(GetTagData(MRQWINDOWTAG_REQMESSAGE,0,((struct opSet *)msg)->ops_AttrList)))
  46.             {
  47.                 ((struct MRQWinData*)(INST_DATA(cl,obj)))->ReqMsg = rmsg;
  48.             }
  49.             return DoSuperMethodA(cl,obj,msg);
  50.  
  51.         case MUIM_HandleEvent :
  52.             if(((struct MUIP_HandleInput*)msg)->imsg)
  53.             {
  54.                 rmsg = ((struct MRQWinData*)(INST_DATA(cl,obj)))->ReqMsg;
  55.                 rmsg->mrm_RCode = -1;
  56.                 DoMethod(_app(obj),MUIM_Application_ReturnID,rmsg);
  57.             }
  58.             break;
  59.  
  60.         default :
  61.             return DoSuperMethodA(cl,obj,msg);
  62.     }
  63. }
  64.  
  65. /*****************************************************************************/
  66.  
  67. struct MUI_CustomClass *NewMRQWindowClass(void)
  68. {
  69.     return MUI_CreateCustomClass(
  70.         NULL,MUIC_Window,NULL,sizeof(struct MRQWinData),&MyWindowDispatcher);
  71. }
  72.